home *** CD-ROM | disk | FTP | other *** search
/ Scene Storm / Scene Storm - Volume 1.iso / coding / c / vbcc / machine.h < prev    next >
C/C++ Source or Header  |  1995-10-03  |  4KB  |  128 lines

  1. /* Typen des Zielrechners auf dem Rechner des Compilers */
  2.  
  3. typedef signed char zchar;
  4. typedef unsigned char zuchar;
  5. typedef signed short zshort;
  6. typedef unsigned short zushort;
  7. typedef signed int zint;
  8. typedef unsigned int zuint;
  9. typedef signed long zlong;
  10. typedef unsigned long zulong;
  11. typedef float zfloat;
  12. typedef double zdouble;
  13. typedef void *zpointer;
  14.  
  15.  
  16. /* maschinenabhaengige Routinen fuer Typkonversion auf Datentypen   */
  17. /* des Zielcodes                                                    */
  18. #define zc2zl(x) ((zlong)(x))
  19. #define zs2zl(x) ((zlong)(x))
  20. #define zi2zl(x) ((zlong)(x))
  21. #define zl2zc(x) ((zchar)(x))
  22. #define zl2zs(x) ((zshort)(x))
  23. #define zl2zi(x) ((zint)(x))
  24. #define zl2zul(x) ((zulong)(x))
  25. #define zuc2zul(x) ((zulong)(x))
  26. #define zus2zul(x) ((zulong)(x))
  27. #define zui2zul(x) ((zulong)(x))
  28. #define zul2zuc(x) ((zuchar)(x))
  29. #define zul2zus(x) ((zushort)(x))
  30. #define zul2zui(x) ((zuint)(x))
  31. #define zul2zl(x) ((zlong)(x))
  32. #define zf2zd(x) ((zdouble)(x))
  33. #define zd2zf(x) ((zfloat)(x))
  34. #define zl2zd(x) ((zdouble)(x))
  35. #define zd2zl(x) ((zlong)(x))
  36. #define zul2zd(x) ((zdouble)(x))
  37. #define zd2zul(x) ((zulong)(x))
  38. #define zul2zp(x) ((zpointer)(x))
  39. #define zp2zul(x) ((zulong)(x))
  40.  
  41. /* maschinenabhaengige Routinen, um Typen des Compiler in Typen des */
  42. /* Zielcodes zu konvertieren                                        */
  43. #define l2zl(x) ((zlong)(x))
  44. #define zl2l(x) ((long)(x))
  45. #define ul2zul(x) ((zulong)(x))
  46. #define zul2ul(x) ((unsigned long)(x))
  47. #define d2zd(x) ((zdouble)(x))
  48. #define zd2d(x) ((double)(x))
  49.  
  50. /* maschinenabhaengige Rechenroutinen fuer Datentypen des           */
  51. /* Zielcodes                                                        */
  52. #define zlmult(a,b) ((a)*(b))
  53. #define zulmult(a,b) ((a)*(b))
  54. #define zdmult(a,b) ((a)*(b))
  55. #define zldiv(a,b) ((a)/(b))
  56. #define zuldiv(a,b) ((a)/(b))
  57. #define zddiv(a,b) ((a)/(b))
  58. #define zlmod(a,b) ((a)%(b))
  59. #define zulmod(a,b) ((a)%(b))
  60. #define zllshift(a,b) ((a)<<(b))
  61. #define zullshift(a,b) ((a)<<(b))
  62. #define zlrshift(a,b) ((a)>>(b))
  63. #define zulrshift(a,b) ((a)>>(b))
  64. #define zladd(a,b) ((a)+(b))
  65. #define zuladd(a,b) ((a)+(b))
  66. #define zdadd(a,b) ((a)+(b))
  67. #define zlsub(a,b) ((a)-(b))
  68. #define zulsub(a,b) ((a)-(b))
  69. #define zdsub(a,b) ((a)-(b))
  70. #define zlleq(a,b) ((a)<=(b))
  71. #define zulleq(a,b) ((a)<=(b))
  72. #define zdleq(a,b) ((a)<=(b))
  73. #define zleq(a)    ((a)==0)
  74. #define zuleq(a)    ((a)==0)
  75. #define zdeq(a)    ((a)==0)
  76. #define zdeqto(a,b)    ((a)==(b))
  77. #define zleqto(a,b) ((a)==(b))
  78. #define zuleqto(a,b) ((a)==(b))
  79. #define zpeq(a)     ((a)==0)
  80. #define zlor(a,b)   ((a)|(b))
  81. #define zulor(a,b)   ((a)|(b))
  82. #define zland(a,b)   ((a)&(b))
  83. #define zuland(a,b)   ((a)&(b))
  84. #define zlxor(a,b)   ((a)^(b))
  85. #define zulxor(a,b)   ((a)^(b))
  86. #define zlkompl(a)  (~(a))
  87. #define zulkompl(a)  (~(a))
  88. #define zdkompl(a)  (~(a))
  89. #define zlneg(a)    (-(a))
  90. #define zulneg(a)    (-(a))
  91. #define zdneg(a)    (-(a))
  92.  
  93. /*  Struktur fuer erweiterte Adressierungsarten */
  94. struct AddressingMode{
  95.     int basereg;
  96.     long dist;
  97.     int skal;
  98.     int dreg;
  99. };
  100.  
  101. /*  Anzahl der Register     */
  102. #define MAXR 24
  103.  
  104. /*  Anzahl der Optionsflags fuer den Codegenerator  */
  105. #define MAXGF 10
  106.  
  107. /*  Soll der Compiler ICs mit z=q2 erzeugen?    */
  108. #define USEQ2ASZ 0
  109.  
  110. /*  Welcher Typ wird mindestens fuer ADDI2P etc. benoetigt  */
  111. #define MINADDI2P 2     /*  short   */
  112.  
  113. /*  Steht das hoechstwertige Byte eines Integers an erster Stelle?  */
  114. /*  Wenn nicht, wird z.Z. angenommen, dass es genau umgedreht ist.  */
  115. /*  Eine andere Darstellung wird Probleme bei Funktionsparametern   */
  116. /*  machen.                                                         */
  117. #define BIGENDIAN 1
  118.  
  119.  
  120. #ifndef EXIT_FAILURE
  121. #define EXIT_FAILURE 20
  122. #endif
  123.  
  124. #ifndef EXIT_SUCCESS
  125. #define EXIT_SUCCESS 0
  126. #endif
  127.  
  128.